const fs = require('fs');
const path = require('path');

// 获取命令行参数
const args = process.argv.slice(2);

if (args.length === 0) {
  console.log('用法: node delManager.js <文件名或文件夹名>');
  console.log('示例: node delManager.js test.txt');
  console.log('示例: node delManager.js myFolder');
  process.exit(1);
}

const target = args[0];
const targetPath = path.resolve(target);

// 检查目标是否存在
if (!fs.existsSync(targetPath)) {
  console.log(`错误: ${target} 不存在！`);
  process.exit(1);
}

// 获取文件/文件夹信息
const stats = fs.statSync(targetPath);

if (stats.isFile()) {
  // 如果是文件，直接删除
  deleteFile(targetPath);
} else if (stats.isDirectory()) {
  // 如果是文件夹，递归删除
  deleteDirectory(targetPath);
} else {
  console.log(`错误: ${target} 不是文件或文件夹！`);
  process.exit(1);
}

// 删除文件函数
function deleteFile(filePath) {
  try {
    fs.unlinkSync(filePath);
    console.log(`文件删除成功: ${path.basename(filePath)}`);
  } catch (err) {
    console.error(`删除文件失败: ${err.message}`);
    process.exit(1);
  }
}

// 递归删除文件夹函数
function deleteDirectory(dirPath) {
  try {
    // 读取目录内容
    const items = fs.readdirSync(dirPath);
    
    // 递归删除目录中的所有内容
    for (const item of items) {
      const itemPath = path.join(dirPath, item);
      const itemStats = fs.statSync(itemPath);
      
      if (itemStats.isDirectory()) {
        // 如果是子目录，递归删除
        deleteDirectory(itemPath);
      } else {
        // 如果是文件，直接删除
        fs.unlinkSync(itemPath);
        console.log(`文件删除: ${item}`);
      }
    }
    
    // 删除空目录
    fs.rmdirSync(dirPath);
    console.log(`文件夹删除成功: ${path.basename(dirPath)}`);
    
  } catch (err) {
    console.error(`删除文件夹失败: ${err.message}`);
    process.exit(1);
  }
}

console.log(`开始删除: ${target}`);
console.log(`类型: ${stats.isFile() ? '文件' : '文件夹'}`);
console.log(`路径: ${targetPath}`);
console.log('');
